home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group96a.txt / 000149_icon-group-sender _Thu Jul 4 16:38:09 1996.msg < prev    next >
Internet Message Format  |  1996-09-05  |  18KB

  1. Received: by cheltenham.cs.arizona.edu; Fri, 5 Jul 1996 08:30:53 MST
  2. To: icon-group@cs.arizona.edu
  3. Date: 4 Jul 1996 16:38:09 -0700
  4. From: icon-project@cs.arizona.edu
  5. Message-Id: <4rhkl1$g4@cheltenham.CS.Arizona.EDU>
  6. Organization: University of Arizona CS Department, Tucson AZ
  7. Sender: icon-group-request@cs.arizona.edu
  8. Reply-To: icon-project@cs.arizona.edu
  9. Subject: Icon Programming Language FAQ
  10. Errors-To: icon-group-errors@cs.arizona.edu
  11. Status: O
  12.  
  13. Archive-name: comp-lang-icon-faq
  14. Posting-Frequency: monthly
  15.  
  16.  
  17.  
  18. Frequently Asked Questions About The Icon Programming Language
  19.  
  20. Last updated: February 16, 1996
  21.  
  22. This FAQ answers various questions about the Icon programming language, ranging
  23. from what it is to how you can get it. The master copy of this FAQ is the Web
  24. page http://www.cs.arizona.edu/icon/www/faq.html. Other on-line documentation
  25. is available via the main Icon page at http://www.cs.arizona.edu/icon/www/.
  26.  
  27. This FAQ is written by Ralph Griswold and Gregg Townsend, with help from Cliff
  28. Hathaway, Clint Jeffery, and Bob Alexander.
  29.  
  30.    * 1. What is Icon?
  31.    * 2. What is Icon good for?
  32.    * 3. Where did Icon come from?
  33.    * 4. What does "Icon" stand for?
  34.    * 5. On what computers does Icon run?
  35.    * 6. Who did all these implementations?
  36.    * 7. Are there other implementations in the works?
  37.    * 8. What about different versions of Icon?
  38.    * 9. Which implementations of Icon have graphics/window capabilities?
  39.    * 10. Where can I get Icon?
  40.    * 11. Where can I get documentation about Icon?
  41.    * 12. How do I get started with Icon?
  42.    * 13. What is the Icon Project?
  43.    * 14. Where can I find examples of Icon programs?
  44.    * 15. What is Idol?
  45.    * 16. How often is material in Icon's FTP area updated?
  46.    * 17. How do I stay up to date with what's going on with Icon?
  47.    * 18. Is there a users' group for Icon?
  48.    * 19. How do I get technical support?
  49.    * 20. Should I use the Icon interpreter or compiler?
  50.    * 21. What do I need to run the interpreter?
  51.    * 22. What do I need to run the compiler?
  52.    * 23. Can I build my own implementation of Icon for a new platform?
  53.  
  54. -------------------------------------------------------------------------------
  55.  
  56. 1. What is Icon?
  57.  
  58. Icon is a very high level general-purpose programming language with extensive
  59. features for processing strings (text) and data structures. Icon is an
  60. imperative, procedural language with a syntax that is reminiscent of C and
  61. Pascal, but its semantics are at a much higher level than those languages.
  62.  
  63. Icon has a novel expression-evaluation mechanism that integrates goal-directed
  64. evaluation and backtracking with conventional control structures. It has a
  65. string scanning facility for pattern matching that avoids the tedious details
  66. usually associated with analyzing strings. Icon's built-in data structures
  67. include sets and tables with associative lookup, lists that can be used as
  68. vectors or stacks and queues, and records.
  69.  
  70. Icon is a strongly, though not statically, typed language. It provides
  71. transparent automatic type conversion. For example, if an integer is used in an
  72. operation that requires a string, the integer is automatically converted to a
  73. string.
  74.  
  75. Several implementations of Icon have high-level graphics facilities with an
  76. easily programmed window interface.
  77.  
  78. Icon manages storage automatically. Objects are created as needed during
  79. program execution and space is reclaimed by garbage collection as needed. The
  80. sizes of strings and data structures are limited only by the amount of
  81. available memory.
  82.  
  83. 2. What is Icon good for?
  84.  
  85. As a general-purpose programming language with a large computational
  86. repertoire, Icon can be used for most programming tasks. It's at its best when
  87. used as a prototyping tool, for processing text, and when ease of programming
  88. is needed for experimental and research applications.
  89.  
  90. Paradoxically, Icon is used most often for short, one-shot tasks and for very
  91. complex applications.
  92.  
  93. Icon is designed to make programming easy; it emphasizes the value of
  94. programmer's time and the importance of getting programs to work quickly. This
  95. explains its usefulness for prototyping as well as the apparent paradox of
  96. applicability to simple and complex applications.
  97.  
  98. 3. Where did Icon come from?
  99.  
  100. Icon is the latest in a series of high-level programming languages designed to
  101. facilitate programming tasks involving strings and structures. The original
  102. language, SNOBOL, was developed at Bell Telephone Laboratories in the early
  103. 60s. SNOBOL evolved into SNOBOL4, which is still in use. Subsequent languages
  104. were developed at The University of Arizona with support from the National
  105. Science Foundation.
  106.  
  107. Incidentally, Icon bears little physical resemblance to SNOBOL4, although it
  108. has similar objectives and many similar capabilities.
  109.  
  110. 4. What does "Icon" stand for?
  111.  
  112. The name Icon (which is not spelled ICON) is not an acronym nor does it stand
  113. for anything in particular, although the word "iconoclastic" was mentioned at
  114. the time the name was chosen. The name predates the now common use of "icon" to
  115. refer to small images used in graphical user interfaces. This latter usage
  116. sometimes causes persons to think mistakenly that Icon is designed to create or
  117. manipulate icons. There's not much that can be done about this.
  118.  
  119. 5. On what computers does Icon run?
  120.  
  121. The implementation of Icon is highly portable. Version 9 runs on UNIX, MS-DOS,
  122. Macintosh/MPW, VAX/VMS, and the Acorn Archimedes. There are older versions for
  123. the Amiga, the Atari ST, IBM CMS and MVS, the Macintosh, and OS/2.
  124.  
  125. Icon programs also are highly portable. Most Icon programs can run on any
  126. platform that supports Icon.
  127.  
  128. 6. Who did all these implementations?
  129.  
  130. The original implementation of Icon for UNIX was done at The University of
  131. Arizona. Most of the other implementations originally were done by volunteers
  132. scattered around the world.
  133.  
  134. It's worth noting that all implementations of Icon are based on the same source
  135. code, which is written in C. This contributes to the portability of Icon
  136. itself, as well as to the portability of programs written in Icon.
  137.  
  138. 7. Are there other implementations in the works?
  139.  
  140. Work is constantly underway on implementations of Icon for new platforms.
  141. Present projects include Microsoft Windows, Windows NT, and a new Macintosh
  142. implementation.
  143.  
  144. 8. What about different versions of Icon?
  145.  
  146. Icon has evolved through a series of versions with improved and extended
  147. capabilities. The latest major version number is 9. This version includes
  148. recent changes and additions, notably in the graphics area, and runs on UNIX,
  149. MS-DOS, Macintosh/MPW, VAX/VMS, and Acorn Archimedes. Other implementations
  150. presently are at Version 8. Almost all programs that run under Version 8 and
  151. that do not use graphics will run under Version 9.
  152.  
  153. 9. Which implementations of Icon have graphics/window capabilities?
  154.  
  155. Icon's graphics facilities presently are supported on UNIX and VAX/VMS. The
  156. Windows NT and Microsoft Windows implementations that support Icon's graphics
  157. facilities are in beta testing. A Macintosh implementation to support graphics
  158. also is in the works.
  159.  
  160. 10. Where can I get Icon?
  161.  
  162. Icon is available via anonymous FTP and on the Web. For FTP, use
  163.  
  164.      ftp.cs.arizona.edu
  165.  
  166. and cd /icon.
  167.  
  168. For the Web, use
  169.  
  170.      http://www.cs.arizona.edu/icon/www/
  171.  
  172. and check out the links there.
  173.  
  174. For FTP, the directory /icon/binaries contains executable versions of Icon for
  175. several systems, including several popular UNIX platforms. The directory
  176. /icon/packages contains source code, test programs, related material, and, most
  177. cases, executable binaries as well. All directories have README files with
  178. additional information.
  179.  
  180. Icon also is available on diskettes for prices ranging from $15 to $25.
  181. Contact:
  182.  
  183.      Icon Project
  184.      Department of Computer Science
  185.      The University of Arizona
  186.      P.O. Box 210077
  187.      Tucson, AZ 85721-0077
  188.  
  189.      520-621-6613 (voice)
  190.      520-621-4246 (fax)
  191.  
  192.      icon-orders@cs.arizona.edu
  193.  
  194. Purchases can be made by credit card (MasterCard or Visa), postal money order,
  195. or check drawn on a bank with a branch in the United States and made payable to
  196. The University of Arizona.
  197.  
  198. Icon is available on CD-ROM from Prime Time Freeware (http://www.ptf.com/,
  199. 408-433-9662). Contact them for details.
  200.  
  201. 11. Where can I get documentation about Icon?
  202.  
  203. The definitive work on Icon is the book
  204.  
  205.      The Icon Programming Language, Griswold and Griswold, second edition,
  206.      Prentice Hall, 1990, 368 pages, ISBN 0-13-447889-4.
  207.  
  208. This book is a complete description and reference manual for Version 8 of Icon.
  209. A technical report describes changes since that version.
  210.  
  211. There also is a book on the implementation of Icon:
  212.  
  213.      The Implementation of the Icon Programming Language, Griswold and
  214.      Griswold, Princeton University Press, 1986, 336 pages, ISBN
  215.      0-691-08431-9.
  216.  
  217. This book describes the implementation as of Version 6 of Icon. Although the
  218. implementation has changed considerably since then, the basic structure is the
  219. same. Technical reports describing recent implementation changes are included
  220. with copies of the book purchased from the Icon Project.
  221.  
  222. These books are available from the Icon Project.
  223.  
  224. Additional documentation is available via FTP in /icon/doc. Notable documents
  225. are:
  226.  
  227.    * IPD266: An Overview of Icon (text, PostScript, PDF)
  228.    * IPD268: Graphics/window facilities (PostScript, PDF)
  229.    * IPD267: Version 9.1 of Icon (text, PostScript, PDF)
  230.  
  231. There are manual pages for Unix systems, and more documentation under the Icon
  232. web page, but there is no complete on-line documentation.
  233.  
  234. The Icon Newsletter, which includes topical material about Icon and a list of
  235. material available from the Icon Project, is published three times a year and
  236. is available on the Web. There is a subscription fee for an on-going
  237. subscription by postal mail. The Icon Analyst, a technically-oriented
  238. newsletter that features articles about programming, is published six times a
  239. year. There is a subscription fee for the Analyst. A sample copy is available
  240. on the Web.
  241.  
  242. All back issues of both newsletters are available for purchase.
  243.  
  244. 12. How do I get started with Icon?
  245.  
  246. If you're running under Unix, check first in the /icon/binaries/unix FTP
  247. directory to see if there is a "starter kit" for your platform. Starter kits
  248. include executables, documentation, and other material.
  249.  
  250. Otherwise, go to the /icon/packages directory and get the appropriate package.
  251. Packages include documentation and other material; see the README file in that
  252. directory for more details. There is a Unix package for platforms that lack
  253. starter kits.
  254.  
  255. If the non-Unix package you pick up does not contain executable files, check
  256. /icon/binaries. You also may want to get the overview of Icon:
  257. /icon/doc/ipd266.doc or ipd266.ps.Z. You'll find pointers to other documents of
  258. interest in the package you pick up.
  259.  
  260. 13. What is the Icon Project?
  261.  
  262. The Icon Project is a name used by the group that develops, implements,
  263. distributes, and supports the Icon programming language.
  264.  
  265. The Icon Project is not commercial organization. It derives support from The
  266. University of Arizona, revenue from the sale of program material and
  267. documentation, and user contributions.
  268.  
  269. 14. Where can I find examples of Icon programs?
  270.  
  271. There is a large program library for Icon. It is an excellent resource for both
  272. new and experienced programmers. The library contains numerous examples of how
  273. to do things with Icon. The library also provides many useful applications, as
  274. well as hundreds of procedures that supplement Icon's built-in repertoire.
  275.  
  276. The library, like other Icon material, is available via FTP in /icon/library
  277. and on diskettes from the Icon Project.
  278.  
  279. 15. What is Idol?
  280.  
  281. Idol is an object-oriented extension to Icon that provides concepts such as
  282. classes and multiple inheritance. Idol is written in Idol and is distributed as
  283. part of the Icon program library. Idol runs on almost all of the platforms that
  284. support Icon.
  285.  
  286. Additional Idol information is available from Clint Jeffery,
  287.  
  288.      jeffery@ringer.cs.utsa.edu.
  289.  
  290. 16. How often is material in Icon's FTP area updated?
  291.  
  292. New material is added when it's available. Established implementations usually
  293. are updated only when there's a major new release. This typically is every year
  294. or two. The Icon program library is updated on a similar schedule.
  295.  
  296. 17. How do I stay up to date with what's going on with Icon?
  297.  
  298. The best way to find out about developments related to Icon is to read the Icon
  299. Newsletter.
  300.  
  301. You can stay up to date on the source code, which is changed much more
  302. frequently than the version on FTP is updated, by subscribing to the source
  303. update service, which provides a new version about twice a year.
  304.  
  305. There also is a subscription service for updates to the Icon program library,
  306. which provides new material about twice a year.
  307.  
  308. There is on-line information about subscribing to these services.
  309.  
  310. 18. Is there a users' group for Icon?
  311.  
  312. There is no official Icon users' group. The Icon Project maintains an
  313. electronic mailing list,
  314.  
  315.      icon-group@cs.arizona.edu.
  316.  
  317. Mail sent to this address is forwarded to subscribers. To subscribe (or
  318. unsubscribe), send a message to
  319.  
  320.      icon-group-request@cs.arizona.edu.
  321.  
  322. There is a gateway between icon-group and comp.lang.icon, an unmoderated
  323. newsgroup for discussing issues related to Icon. The gateway, which exchanges
  324. messages between the two systems, is imperfect and not under the control of the
  325. Icon Project.
  326.  
  327. The newsgroup generally provides faster response than the mailing list, is less
  328. intrusive, but sometimes suffers from inappropriate postings. The Icon Project
  329. usually sends messages of interest to the Icon community to icon-group.
  330.  
  331. 19. How do I get technical support?
  332.  
  333. The Icon Project is not a commercial organization, and its capacity for
  334. providing technical support is limited. Please use the appropriate resource
  335. when you need assistance:
  336.  
  337. Ordering Icon Material
  338.  
  339. mail:   Icon Project
  340.         Department of Computer Science
  341.         The University of Arizona
  342.         P.O. Box 210077
  343.         Tucson, Arizona 85721-0077
  344.         U.S.A.
  345.  
  346. fax:    (520) 621-4246
  347. voice:  (520) 621-6613
  348. e-mail: icon-orders@cs.arizona.edu
  349.  
  350. Getting On-Line Information and Material
  351.  
  352. web:    http://www.cs.arizona.edu/icon/www/
  353. ftp:    ftp.cs.arizona.edu (cd /icon)
  354. e-mail: ftpmail@cs.arizona.edu
  355.  
  356. Send a message consisting of the word help.
  357.  
  358. Assistance with Installing Icon
  359.  
  360. e-mail: icon-project@cs.arizona.edu
  361.  
  362. Bug Reports
  363.  
  364. e-mail: icon-project@cs.arizona.edu
  365. fax:    (520) 621-4246
  366.  
  367. Assistance with Programming Problems
  368.  
  369. e-mail: icon-group@cs.arizona.edu
  370. news:   comp.lang.icon
  371.  
  372. Uploading Files
  373.  
  374. ftp:    ftp.cs.arizona.edu (cd /incoming)
  375.  
  376. After uploading, send e-mail to icon-project@cs.arizona.edu.
  377.  
  378. 20. Should I use the Icon interpreter or compiler?
  379.  
  380. As the question indicates, there are two forms of the implementation of Icon,
  381. an interpreter and a compiler. The interpreter gets a program into execution
  382. quickly and is recommended for program development, debugging, and most
  383. production situations. The compiler produces code that executes somewhat faster
  384. than interpreted code (a factor of 2 or 3 is typical), but the compiler
  385. requires a large amount of resources and is very slow in producing executable
  386. code. It also requires additional time and effort at installation time. The
  387. compiler is recommended only for small programs where execution speed is the
  388. paramount concern.
  389.  
  390. 21. What do I need to run the interpreter?
  391.  
  392. The Icon interpreter will run on most computers. Under MS-DOS, the Icon
  393. interpreter needs 500 KB of application RAM to work well.
  394.  
  395. 22. What do I need to run the compiler?
  396.  
  397. The Icon compiler is another matter. It requires a C compiler, a fast CPU for
  398. tolerable compilation times, a considerable amount of disk space, and a lot of
  399. memory -- at least several megabytes.
  400.  
  401. The Icon compiler generates C code, which must then be compiled to produce an
  402. executable program. The flexibility that Icon provides to programmers makes
  403. compilation technically difficult and the process requires a large amount of
  404. memory. The C code it produces is voluminous and stresses the most robust C
  405. compilers.
  406.  
  407. Generally speaking, the Icon compiler is practical for platforms in the
  408. workstation class but not for personal computers.
  409.  
  410. 23. Can I build my own implementation of Icon for a new platform?
  411.  
  412. As mentioned above, Icon is written in C and the source code is available. The
  413. existing implementations are testament to its portability. (A small amount of
  414. assembly-language code is required for a context switch, but this is only
  415. needed for an optional feature -- co-expressions -- that can be disabled
  416. without affecting most of Icon.)
  417.  
  418. New ports involve platform-specific configuration parameters and, in some
  419. cases, platform-specific code. The feasibility of a new port and the amount of
  420. work it may take depends on the platform -- its architecture, its C compiler,
  421. and its environment.
  422.  
  423. Ports to new Unix platforms generally are easy, although novel architectures
  424. may present problems. Ports to new operating systems generally are more
  425. difficult, especially if Icon's graphics facilities are implemented.
  426.  
  427. The Icon Project provides what help it can with new ports. In return, it asks
  428. that code related to the port to be returned to the Icon Project for inclusion
  429. in future versions of the source code for Icon. This makes the new port
  430. available to others as well as to the porter when Icon is updated.
  431.